package day13;



/*
  super 关键字的使用:
  1. super理解为：父类的引用
  2. super可以用来调用，属性，方法
  3. super的使用
              我们可以在子类的方法或构造器中，通过使用'super.属性' 或 super.方法 的方式,显式的调用父类中的属性和方法。
              但是，通常情况下，我们习惯省略 super.
               2. 特殊情况，当子类和父类中定义了同名的属性时，我们要想在子类中调用父类中声明的属性，则必须
               显式super.属性 的方式，表明调用的是父类中声明的属性。
      特殊情况: 当子类重写了父类中的方法以后，我们想在子类中的方法中调用父类中共被重写的方法时，必须使用
         super.方法的方式，表明调用的是父类中被重写的方法。
  4. 调用构造器(调用父类中的构造器)
       1. 我们可以在子类的构造器中显式的使用 super(参数列表) 的方式，调用父类中声明的指定的构造器
       2.super(形参列表)的使用，必须在子类“构造器”中的首行使用。与 this(形参列表)调用类的构造器一样
       3.我们在类的构造器中，针对于 "this(参数列表)" 或super(形参列表) 只能二选一,不能同时出现：
       因为无论是 this()调用本类中的构造器还是super()调用父类中的构造器,都是只能出现在首行位置,使用逗号分隔是无效的.
       4. 在构造器的首行，没有显式声明调用 this(形参列表) / super(形参列表)，则默认调用的是父类中空参的构造器:super()
       5. 在类中的多个构造器中，至少有一个类的构造器中使用了 super(形参列表)：因为无论是什么类都一定有父类，继承了父类，
       而一旦继承了父类就必须调用父类中的构造器，不然无法调用new 类。

 */
public class StudentTest {
    public static void main(String[] args) {

        Student1 student1 = new Student1();

        student1.show();

        student1.study();

        System.out.println("*******************************");

        Student1 student2 = new Student1("TOM",19,"IT");
        student2.show();
    }
}